import COS from 'cos-js-sdk-v5'

// 创建cos对象
const cos = new COS({
    getAuthorization: function (options, callback) {
    // 异步获取临时密钥
    // 服务端 JS 和 PHP 例子：https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/
    // 服务端其他语言参考 COS STS SDK ：https://github.com/tencentyun/qcloud-cos-sts-sdk
    // STS 详细文档指引看：https://cloud.tencent.com/document/product/436/14048
    var url = ''; // url替换成您自己的后端服务
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.onload = function (e) {
        try {
            var data = JSON.parse(e.target.responseText);
            var credentials = data.data;
        } catch (e) {
        }
        if (!data || !credentials) {
          return console.error('credentials invalid:\n' + JSON.stringify(data, null, 2))
        };
        callback({
          TmpSecretId: credentials.tmpSecretId,
          TmpSecretKey: credentials.tmpSecretKey,
          SecurityToken: credentials.sessionToken,
          // 建议返回服务器时间作为签名的开始时间，避免用户浏览器本地时间偏差过大导致签名错误
          StartTime:credentials.StartTime , // 开始时间戳，单位秒，如：1580000000
          ExpiredTime:credentials.ExpiredTime, // 结束时间戳，单位秒，如：1580000000
        });
    };
    xhr.send();
    }
});


export function uploadFile(file,keys) {
    const key = 'uploadImg/'+keys ; // Key: 对象键（Object 的名称），对象在存储桶中的唯一标识
    let res = Promise
    .all([cos]) //获取临时密钥
    .then((res) => {
      return new Promise((resolve,reject) => {
        cos.putObject({
          Bucket: '', /* 后端返回的桶名称 */
          Region: '',    /* 桶的对应地区 */
          Key: key,              /* 文件名，也是文件在桶里唯一的标识 */
          StorageClass: 'STANDARD',
          Body: file, // 上传文件对象
          onProgress: function (progressData) {
            // console.log(JSON.stringify(progressData));
          }
        }, function (err, data) {//回调函数
          if (!err) {
              //成功返回data对象
            resolve(data);
          } else {
              //失败返回error信息
            reject(err);
          }
        });
      })
    })
    return res
}
